はじめての Cocoa Application
はじめに
さて、私が今まで Xcode を開いて、新規プロジェクトを作成する際、大抵真っ先に選ぶのは、iOS の項目の中にあるテンプレートです。
例えば、こんなふうに。
しかし、そこを変えて、今回は OS X の項目を選んでみます。
というわけで、普段 iOS アプリを作成している私が、OS X の Cocoa Application テンプレートを使ってみた、というのが今回のお話になります。
Storyboard
iOS で 例えば Single View Application を選択すると、UIViewControllerが1つ Storyboard 上に置かれている、という状態になります。
しかし、OS X の Cocoa Application を選択すると、見た目上、なにやら3つ表示されています。一番上にはメニューバーが見えますね。
この状態で実行してみましょう。
Storyboard上のメニューバーが、画面最上部に現れました。
Cocoa Application のメニューバーはStoryboard上で扱えるようですね。
文字を表示する
iOS アプリであれば、UILabelを使えますね。
@IBOutlet weak var label: UILabel!
label.text = "Hello World"
例えばこうです。アウトレットで繋いだUILabel型のlabelで表示するテキストを、コード中から指定する想定のコードです。
しかし、Cocoa Application では、UIを接頭辞とするクラスは使いません。UILabelは使いません。
オブジェクトライブラリで、Labelを検索すると、すぐ見つかります。2つのうち上の方の"Label"を、View Controller に貼り付けて、コードとアウトレットで結びます。
オブジェクトライブラリ上でLabelと表示されていたものが、実際はNSTextField型のオブジェクトであることがわかります。
NSLabel というものは無いんですね。。
テキスト内容の変更
@IBOutlet weak var textField: NSTextField! self.textField.text = "Hello World"
これだとエラーが出ます。
NSTextFieldがtextプロパティを持っていないからです。
内容を変更するには、stringValueプロパティを用います。
self.textField.stringValue = "Hello macOS World"
これでOKですね。
画像を表示する
続いて画像です。こちらは iOS と同じ感覚で行けるでしょうか?
オブジェクトライブラリで探すと、Image Viewが見つかります。こちらを View Controller に貼り付け、大きさや位置を整えます。
@IBOutlet weak var imageView: NSImageView!
アウトレットでコードとつなぎます。NSImageView型だという事がわかりますね。
コード中から画像を半透明にしたいと思います。
self.imageView.alpha = 0.5
iOS ならこうですね。UIImageView型のimageViewのアルファ値を下げています。
しかし、NSImageViewには、alphaプロパティがありません。
self.imageView.alphaValue = 0.5
代わりにCGFloat型のalphaValueを使います。
実行する
実行してみました。
とても単純なアプリですが、Macアプリがうごきました。
まとめ
Cocoa Application を作るために必要なクラスは、iOS のそれと似ている一方、別物でもあります。
似た機能を持つクラスのプロパティ名も、細かいところで違ったりします。
しかし、同じ Xcode という環境で開発がデキるため、少なくとも取っ掛かり部分に関しては、そこまで難しいものではないと思いました。